package com.shujia.day13;

public class Demo05ThreadControl2 {
    public static void main(String[] args) throws InterruptedException {
        /*
            TODO:
                线程控制方法
                ① sleep 可以使当前的线程处于睡眠状态（具有倒计时的阻塞状态）
                    sleep(1000)  => 每次执行当前线程睡眠1秒
                    sleep(long millis, int nanos)  => 按毫秒+纳秒方式睡眠
                ② join 当使用该方法时，其他线程必须等待当前线程执行完成才能继续执行
                ③ yield 礼让线程,让当前线程退出CPU的执行权,重新竞争
                ④ setDaemon 设置当前线程为后台守护线程
                       当线程设置为守护线程时,如果其他所有线程执行完成,那么当前线程也会被停止 => 放入后台执行
                ⑤ 中断线程
                        public final void stop()  强制停止  => 该方法已经过时了
                        public void interrupt() 非强制执行,在当前线程在本次CPU执行时间片断执行完成后,再进行关闭操作
                                        会有异常提示信息

         */

//        DaemonThread thread1 = new DaemonThread("易政");
//        DaemonThread thread2 = new DaemonThread("袁枫");
//        thread1.setDaemon(true);
//        thread1.start();
//        thread2.start();

        StopThread thread1 = new StopThread("徐玉娟");
        StopThread thread2 = new StopThread("陆玉龙");
        thread1.start();
        thread2.start();

    }

    static class DaemonThread extends Thread {
        public DaemonThread(String name) {
            super(name);
        }

        @Override
        public void run() {
            for (int i = 0; i < 10; i++) {
                System.out.println("当前线程:" + this.getName() + "是否为守护线程:" + this.isDaemon());

                if ("易政".equals(this.getName())) {
//                    try {
//                        Thread.sleep(1000);
//                    } catch (InterruptedException e) {
//                        throw new RuntimeException(e);
//                    }
                }
                System.out.println(this.getName() + "正在执行...");
            }
        }
    }
    static class StopThread extends Thread{
        public StopThread(String name) {
            super(name);
        }

        @Override
        public void run() {
            for (int i = 0; i < 10; i++) {
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e) {
                    throw new RuntimeException(e);
                }
                if ("徐玉娟".equals(this.getName()) && i == 3){
//                    this.stop();
                    this.interrupt();
                }
                System.out.println("当前线程:" + this.getName() + "当前i:" + i);
            }

        }
    }

}
